친구 마르코프에게 문자 보내기
100% 해석 가능한 다음 토큰 생성기
문자 보내기
예전에 친구들과 이런 게임을 한 적이 있었어요. 휴대폰을 들고 추천 다음 단어만 사용해서 친구에게 메시지를 만드는 거예요. 혹시 여러분도 해보셨나요?
여기 약간의 콘텐츠로 "학습된" 시뮬레이터가 있습니다. 한번 해보세요!
우리는 이것을 "나-봇"처럼 이야기했어요. 개인별 사용 패턴을 기반으로 단어를 추천한다는 걸 알았고, 개인화된 추천에서 우리 각자의 목소리를 볼 수 있었죠.
당시엔 그냥 신기한 기술이라고 넘겼어요. 알고리즘이 얼마나 단순할 수 있는지는 미처 몰랐던 것 같아요.
저와 함께 만들어보고 싶다면 계속 읽어보세요 :)
모델 "학습"시키기
몇 가지 메시지로 학습해봅시다. 단어 간의 연결 관계를 집계하기만 하면 됩니다. 메시지 하나씩 해봅시다.
전이 행렬
위에서 메시지를 추가하면 행렬이 만들어집니다.
단어 간 연결 관계를 완성한 이 지도를 빈도 테이블이라고 합니다. 각 행을 정규화하면 다음에 올 단어의 확률 분포를 얻을 수 있습니다.
지금까지의 내용을 바탕으로 다음 단어를 고르는 행위를 샘플링이라고 합니다. Claude 같은 현대 언어 모델에서도 이 과정에 동일한 용어를 사용합니다.
샘플링 해보기
5개의 문자를 기반으로 한 동일한 행렬을 사용하여, 이번엔 확률을 보면서 게임을 해보세요.
강조된 행이 현재 컨텍스트입니다. 계속하려면 사용 가능한 선택지에서 단어를 고르세요.
규모를 키워보기
5개의 메시지로 작은 행렬과 몇 가지 예측을 얻었습니다. 데이터가 더 많아지면 어떻게 될까요?
다음 이후:
조절 노브
샘플링할 때 확률을 볼 수 있었지만, 어떤 단어가 "맞는 것 같은" 느낌인지 직감도 사용했을 거예요.
직감 대신 코드로 그 선택을 해야 한다면, 어떤 규칙을 넣어야 가장 좋은 결과를 만들 수 있을까요?
연결고리
방금 사용한 샘플링 전략은 개발자들이 Claude에 전달하는 샘플링 제약 조건과 거의 동일합니다. LLM에서는 몇 가지가 다릅니다.
마르코프 테이블 조회는 매우 단순하고 설명하기 쉬운 연산입니다. 신경망의 순전파는 훨씬 복잡합니다. 하지만 어느 경우든 출력은 동일합니다: 다음에 올 가능성 있는 단어 또는 토큰의 확률 분포입니다.
샘플링은 동일하지만, 학습은 근본적으로 다릅니다. 앞서의 지수적 한계(어휘 N 행)는 적용되지 않습니다. LLM은 단순히 단어를 집계하는 설명 가능성을 포기하는 대신, 훨씬 더 많은 컨텍스트와 훨씬 더 뛰어난 능력을 얻습니다.
100년 된 기술
"이게 진짜 기술인가요?" 좋은 질문입니다, 독자 여러분.
마르코프는 이 아이디어를 1906년에 발표했습니다. 한 세기가 지난 2010년에는 이와 같은 n-그램 모델이 휴대폰의 다음 단어 예측(SwiftKey, 이후 Apple의 QuickType)을 구동하고 있었습니다. 2015년경부터 신경망 — 처음에는 RNN, 그리고 2017년에는 트랜스포머 — 이 테이블 조회 방식을 학습된 함수로 대체하기 시작했고, 나머지는... 글쎄요, 지금 우리가 하고 있는 것이죠.
